Hash joins are a common operator in business intelligence (BI) queries. Hash joins involve many random accesses to hash tables. Conventional systems do partitioned joins by dividing the join hash table into partitions, so that lookups are focused on small data structures, which will fit better in cache. But below a threshold on the hash table size, a non-partitioned join is more efficient because it avoids the costs of partitioning.